let timers,flag;
const baseUrl = 'https://192.168.0.0'
export default {
	toUrl(url) {
		uni.navigateTo({
			url
		})
	},
	toTab(url) {
		uni.switchTab({
			url
		})
	},
	toLaunch(url) {
		uni.reLaunch({
			url
		})
	},
	toBack(url){
		uni.navigateBack({
			delta: url || 1
		})
	},
	/**
	 * 验证手机号码
	 */
	isPhone(value){
		return /^1(3|4|5|6|7|8|9)\d{9}$/.test(value)
	},
	/**
	 * 验证身份证号码
	 */
	idCard(value) {
	    return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(
	        value
	    )
	},
	/**
	 * 金额,只允许2位小数
	 */
	amount(value) {
	    // 金额，只允许保留两位小数
	    return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value)
	},
	/**
	 * 是否json字符串
	 */
	jsonString(value) {
	    if (typeof value === 'string') {
	        try {
	            const obj = JSON.parse(value)
	            if (typeof obj === 'object' && obj) {
	                return true
	            }
	            return false
	        } catch (e) {
	            return false
	        }
	    }
	    return false
	},
	/**
	 * 上传图片
	 */
	uploadFileimg(callback, that) {
		let thats = this;
		uni.chooseImage({
			count: 1,
			sizeType: ['compressed'], // original 原图，compressed 压缩图，默认二者都有
			sourceType: ['album','camera'], //从相册选择  camera 使用相机
			success: (res) => {
				let tempFilePaths = res.tempFilePaths[0];
				uni.showLoading({
					mask: true,
					title: '上传中...'
				});
				uni.uploadFile({
					url: `${baseUrl}/api/file/upload`,
					filePath: tempFilePaths,
					name: 'file',
					header: {
						"Authorization": uni.getStorageSync('TOKEN') || ''
					},
					success(res) {
						uni.hideLoading();
						let datas = JSON.parse(res.data);
						callback(datas);
					}
				});
			},
			fail: (err) => {
				console.log('图片上传-', err)
			}
		});
		setTimeout(() => {
			uni.hideLoading();
		}, 20000)
	},
	/**
	 * 上传视频
	 */
	uploadFilevideo(callback, that) {
		let thats = this;
		uni.chooseVideo({
			count: 1,
			sourceType: ['album','camera'], //从相册选择  camera 使用相机
			camera: 'back', // 默认使用前置摄像头，可选值有front、back
			maxDuration: 60, // 最大视频录制时长（秒）
			success: (res) => {
				let tempFilePaths = res.tempFilePath;
				uni.showLoading({
					mask: true,
					title: '上传中...'
				});
				uni.uploadFile({
					url: `${baseUrl}/api/file/upload`,
					filePath: tempFilePaths,
					name: 'file',
					header: {
						"Authorization": uni.getStorageSync('TOKEN') || ''
					},
					success(res) {
						uni.hideLoading();
						let datas = JSON.parse(res.data);
						callback(datas);
					}
				});
			},
			fail: (err) => {
				console.log('图片上传-', err)
			}
		});
		setTimeout(() => {
			uni.hideLoading();
		}, 20000)
	},
	/**
	 * 创建一个防抖函数，在指定延迟后执行原始函数
	 * @param {Function} fn - 要防抖的函数
	 * @param {number} [delay=300] - 延迟时间（毫秒）
	 * @param {Object} [options={}] - 配置选项
	 * @param {boolean} [options.immediate=false] - 是否在开始时立即执行
	 * @returns {Function} - 返回防抖后的函数，包含 cancel 和 flush 方法
	 */
	Debounce(fn, t) {
		const delay = t || 1000
		let timer
		return function() {
			const args = arguments
			if (timer) {
				clearTimeout(timer)
			}
			timer = setTimeout(() => {
				timer = null
				fn.apply(this, args)
			}, delay)
		}
	},
	/**
	 * 节流原理：在一定时间内，只能触发一次
	 *
	 * @param {Function} func 要执行的回调函数
	 * @param {Number} wait 延时的时间
	 * @param {Boolean} immediate 是否立即执行
	 * @return null
	 */
	Throttle(func, wait = 500, immediate = true) {
	    if (immediate) {
	        if (!flag) {
	            flag = true
	            // 如果是立即执行，则在wait毫秒内开始时执行
	            typeof func === 'function' && func()
	            timers = setTimeout(() => {
	                flag = false
	            }, wait)
	        }
	    } else if (!flag) {
	        flag = true
	        // 如果是非立即执行，则在wait毫秒内的结束处执行
	        timers = setTimeout(() => {
	            flag = false
	            typeof func === 'function' && func()
	        }, wait)
	    }
	},
	/**
	 * 富文本图片处理 
	 */
	formatRichText(html) {
		// html 就是你要传进来地富文本参数
		// 去掉img标签里的style、width、height属性
		let newContent = html.replace(/<img[^>]*>/gi, function(match, capture) {
				match = match.replace(/style="[^"]*"/gi, '')
				//console.log("sss", match);
				return match;
		});
		//console.log("ddd", newContent);
		// 修改所有style里的width属性为max-width:100%
		newContent = newContent.replace(/\<img/gi,
				'<img style="max-width:100%;height:auto;display:block;margin:0px auto;"');
		// 去掉<br/>标签
		newContent = newContent.replace(/<br[^>]*\/>/gi, '');
		// 返回 处理后地结果
		return newContent;
	},
	/**
	 * 获取当前时间
	 */  
	 getNowTime(){
		let today = new Date();
		let year = today.getFullYear(); // 获取当前年份
		let month = today.getMonth() + 1; // 获取当前月份（注意：月份从 0 开始计数，所以需要加 1）
		let day = today.getDate(); // 获取当前日（几号）
		let hour = today.getHours(); // 获取当前小时
		let minute = today.getMinutes(); // 获取当前分钟
		let second = today.getSeconds(); // 获取当前秒钟
		
		// 格式化输出当前时间
		let nowTime = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
		return nowTime
	},
	// h5公众号微信授权
	authorization: () => {
		let redirect_uri = encodeURIComponent(location.href)
		let url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + uni.getStorageSync('logo').app_id +
			'&redirect_uri=' + redirect_uri +
			'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect'
		location.href = url
	},
	// app跳转浏览器  URL跳转路径
	ExternalUrl(URL) {
		// 仅在app中运行，且调用plus这个api
		// #ifdef APP-PLUS
		plus.runtime.openURL(URL, function(err) {
			uni.showToast({
				title: JSON.stringify(err),
				duration: 8000
			})
		});
		// #endif
	},
	// 切换默认头部标题
	Title(title) {
		uni.setNavigationBarTitle({
			title,
			success: (res) => {
				
			},
			fail: (err) => {
				
			}
		})
	},
	// 图片预览 urls图片链接数组
	previewImg(url) {
		uni.previewImage({
			urls: [url],
			loop: true,
		})
	},
	// 复制文本 text文本
	copy(text) {
		var that = this
		// #ifdef H5
		var input = document.createElement("input"); // 直接构建input
		input.value = text
		document.body.appendChild(input); // 添加临时实例
		input.select(); // 选择实例内容
		document.execCommand("Copy"); // 执行复制
		document.body.removeChild(input); // 删除临时实例
		uni.showToast({
			title: '复制成功'
		})
		// #endif
		// #ifndef H5
		uni.setClipboardData({
			data: text,
			success: () => {
				uni.showToast({
					title: '复制成功'
				})
			}
		})
		// #endif
	},
}